<?php
namespace App\Http\Controllers;

// 导入模型userAdmin
use App\userAdmin;

class OrmTestController extends Controller{

    // 使用模型查找数据
    public function ormFind($id=""){

        // all函数输出所有信息静态方法all()
        // $admins=userAdmin::all();

        // 根据主键查询记录数静态方法find()
        // $admins=userAdmin::find(10);

        // 根据主键查找，没有就报错
        // $admins=userAdmin::findOrFail($id);

        // ORM对象使用查询构造方法,可以加上限定条件
        // $admins=userAdmin::where("id",">",$id)
        // ->orderBy("id","desc")
        // ->get();

        // echo "<pre>";
        // userAdmin::chunk(2,function($users){
        //     var_dump($users);
        // });


        // ORM对象使用聚合函数
        //求和函数
        // echo userAdmin::count();
        // 求最大函数
        echo userAdmin::where("id",">","$id")
        ->max("userRole");
        // dd($admins);

    }

    // 使用模型新增数据
    public function ormInsert(){

        // 使用模型对象的save()成员方法
        // 需要增加什么字段的数据，直接用模型对象指向目标字段属性
        // 模型对象中可以不需要有该字段属性
        $user=new userAdmin();
        $user->userName="laravel6";
        $user->userPassword="1212121121";
        dd($user->save());

        // 使用模型的静态方法create()方法新增数据
        //传递以字段与值组成的数组元素
        // userAdmin::create([
        //     "userName"=>"laravelcreated",
        //     "adress"=>"dasdsda"
        // ]);

        // 使用静态方法firstOrCreat(),以字段值查找符合的第一条数据
        //如果没有找到则新增一条以刚刚查询条件字段的数据
        // $users=userAdmin::firstOrCreate([
        //     "userName"=>"laravelfirstOrCreate",
        //     "userPassword"=>"1212121121"
        // ]);

        // 使用静态方法firstOrNew()寻找一字段值查找符合数据的第一条数据
        // 如果没有找到则返回一个以刚刚查找条件为属性值的模型实例对象
        // 需要保存的话调用模型实例对象的save方法
        // $user=userAdmin::firstOrNew([
        //     "userName"=>"laravelfirstNew"
        // ]);
        // $user->save();
        // dd(userAdmin::find(38));
        dd($user);
    }

    // 使用模型更新数据
    public function OrmUpdate(){

        // 先使用模型静态方法find()以主键查找数据
        // 再将查找回来的保存为模型实例对象的属性一个个修改，再调用模型save()方法保存
        // $user=userAdmin::find(37);
        // $user->userPassword="21221212";
        // $user->address="dasdasds";
        // $user->save();
        // dd($user);

        // 使用查询构造更新数据
        $num=userAdmin::where("id",">","15")
        ->update([
            "address"=>"测试更新"
        ]);
        var_dump($num);

    }

    // 使用模型删除数据
    public function ormDelete(){
        
        // 通过模型对象方法delete()删除
        // 首先需要获得需要删除数的模型对象
        // 先通过静态方法find()以主键查找数据
        // $user=userAdmin::find(41);
        // $user->delete();

        // 直接通过模型静态方法删除destory()
        //传入需要删除的主键id，
        // userAdmin::destroy(39);
        // 如果批量删除，直接传入多个主键id,或者数组
        // userAdmin::destroy(37,38);

        // 删除指定条件的数据，直接加where()查询构造,+delete()
        // 查询构造返回的都是数据模型对象，直接调用模型对象方法就好
        userAdmin::where("id",">",35)
        ->delete();

        
    }

}